package com.example.demo1210.se;


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.lang.Thread;
import javax.swing.*;

public class ChatApplet extends Applet implements MouseListener, Runnable {
    int x, y;
    int top, point;

    /***对小程序进行变量和颜色的初始化。*/
    @Override
    public void init() {
        x = 0;
        y = 0;
//设置背景色为黑色
        setBackground(Color.black);
        addMouseListener(this);
    }

    @Override
    public void paint(Graphics g) {
    }

    /**
     * 使该程序可以作为应用程序运行。
     */
    public static void main(String args[]) {
        ChatApplet applet = new ChatApplet();
        JFrame frame = new JFrame("TextAreaNew");
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.getContentPane().add(applet, BorderLayout.CENTER);
        frame.setSize(800, 400);
        applet.init();
        applet.start();
        frame.setVisible(true);
    }

    /***程序主线程，对一个烟花进行绘制。*/
    @Override
    public void run() {
        //变量初始化
        Graphics g1;
        g1 = getGraphics();
        int y_move, y_click, x_click;
        int v;
        x_click = x;
        y_click = y;
        y_move = 400;
        v = 3;
        int r, g, b;
        while (y_move > y_click) {
            g1.setColor(Color.black);
            g1.fillOval(x_click, y_move, 5, 5);
            y_move -= 5;
            r = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            g = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            b = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            g1.setColor(new Color(r, g, b));
            g1.fillOval(x_click, y_move, 5, 5);
            for (int j = 0; j <= 10; j++) {
                if (r > 55) {
                    r -= 20;
                }
                if (g > 55) {
                    g -= 20;
                }
                if (b > 55) {
                    b -= 20;
                }
                g1.setColor(new Color(r, g, b));
                g1.fillOval(x_click, y_move + j * 5, 5, 5);
            }
            g1.setColor(Color.black);
            g1.fillOval(x_click, y_move + 5 * 10, 5, 5);
            try {
                Thread.sleep(v++);
            } catch (InterruptedException e) {
            }
        }
        for (int j = 12; j >= 0; j--) {
            g1.setColor(Color.black);
            g1.fillOval(x_click, y_move + (j * 5), 5, 5);
            try {
                Thread.sleep((v++) / 3);
            } catch (InterruptedException e) {
            }
        }
        y_move = 400;
        g1.setColor(Color.black);
        while (y_move > y_click) {
            g1.fillOval(x_click - 2, y_move, 9, 5);
            y_move -= 5;
        }
        v = 15;
        for (int i = 0; i <= 25; i++) {
            r = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            g = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            b = (((int) Math.round(Math.random() * 4321)) % 200) + 55;
            g1.setColor(new Color(r, g, b));
            g1.drawOval(x_click - 3 * i, y_click - 3 * i, 6 * i, 6 * i);
            if (i < 23) {
                g1.drawOval(x_click - 3 * (i + 1), y_click - 3 * (i + 1), 6 * (i + 1), 6 * (i + 1));
                g1.drawOval(x_click - 3 * (i + 2), y_click - 3 * (i + 2), 6 * (i + 2), 6 * (i + 2));
            }
            try {
                Thread.sleep(v++);
            } catch (InterruptedException e) {
            }
            g1.setColor(Color.black);
            g1.drawOval(x_click - 3 * i, y_click - 3 * i, 6 * i, 6 * i);
        }
    }

    /***对鼠标事件进行监听。*临听其鼠标按下事件。*当按下鼠标时，产生一个新线程。*/
    @Override
    public void mousePressed(MouseEvent e) {
        x = e.getX();
        y = e.getY();
        Thread one;
        one = new Thread(this);
        one.start();
        one = null;
    }

    /**
     * 实现MouseListener接中的方法。为一个空方法。
     */
    @Override
    public void mouseReleased(MouseEvent e) {

    }

    /**
     * 实现MouseListener接中的方法。为一个空方法。
     */
    @Override
    public void mouseEntered(MouseEvent e) {
    }

    /**
     * 实现MouseListener接中的方法。为一个空方法。
     */
    @Override
    public void mouseExited(MouseEvent e) {
    }

    /**
     * 实现MouseListener接中的方法。为一个空方法。
     */
    @Override
    public void mouseClicked(MouseEvent e) {
    }

}
